function initWkf(oPai,sSeqEtapa)
{
    sSeqEtapa = "[{idSq:1,idSqAnt:'0',idPerfil:100,sdcPerfil:'Atendente',idEtapa:1000,sdcEtapa:'Entrevista',aFases:[{idFase:201,forFase:'Agendar Entrevista'},{idFase:202,forFase:'Entrevistar'}]}"
                + ",{idSq:2,idSqAnt:'1',idPerfil:100,sdcPerfil:'Atendente',idEtapa:1001,sdcEtapa:'Recolher documentos',aFases:[{idFase:201,forFase:'Requisitar documentos'},{idFase:202,forFase:'Conferir documentos'}]}"
                + ",{idSq:3,idSqAnt:'2',idPerfil:101,sdcPerfil:'Avalista',idEtapa:1002,sdcEtapa:'Avaliar Condicoes Fin.',aFases:[{idFase:201,forFase:'Recolher Info. geral'},{idFase:202,forFase:'Lancar Aprovacao/Reprovacao'}]}"
                + ",{idSq:4,idSqAnt:'2',idPerfil:102,sdcPerfil:'Advocacia',idEtapa:1003,sdcEtapa:'Preparar Documentacao',aFases:[{idFase:201,forFase:'Preparar Documentacao'}]}"
                + ",{idSq:5,idSqAnt:'2',idPerfil:102,sdcPerfil:'Advocacia',idEtapa:1004,sdcEtapa:'Preparar Documentacao',aFases:[{idFase:201,forFase:'Preparar Documentacao'}]}"
                + ",{idSq:6,idSqAnt:'3,4,5',idPerfil:100,sdcPerfil:'Atendente',idEtapa:1005,sdcEtapa:'Repassar Informacoes + fechamento contrato',aFases:[{idFase:201,forFase:'Agendar Conversa'},{idFase:202,forFase:'Repasse informacoes'},{idFase:203,forFase:'Req. Assinaturas Fechamento'}]}]";

    var a = new wkfDesktop(oPai,sSeqEtapa);
}
wkfDesktop = function(oPai,sSeqEtapa)
{
    this.oPai   = oPai;
    this.oInfo  = eval(sSeqEtapa);
    this.oPai.oWkf  = this;
    this.desktop    = null;
    this.meio   = true;
    this.widthEtapa     = 80;
    this.heightEtapa    = 90
    this.gerate();
}
wkfDesktop.prototype.gerate = function()
{
    setCSS(this.oPai,"border: 0px;margin: 0px;")
    this.window     = $c("div","background-color:black;position:absolute;float:left;top:0px;left:0px;width:100%;height:100%;");
    this.oMeio      = $c("div",(this.meio?"border-right:1px dotted black;":"") + "position:relative;float:left;top:0px;left:0px;width:50%;height:100%");
    this.menu       = $c("table","background-color:red;position:absolute;float:left;top:0px;left:0px;width:10%;height:100%;");
    this.desktop    = $c("div","background-color:blue;position:absolute;float:left;top:0px;left:10%;width:90%;height:100%;");
    

    this.oPai.appendChild(this.window);
    this.window.appendChild(this.menu);
    this.window.appendChild(this.desktop);
    this.desktop.appendChild(this.oMeio);

    this.aEtapas        = new Array();
    this.aEtapas.push(new Etapa(this,eval("[{idSq:0,idSqAnt:'-1'}]")[0]));
    this.aEtapas[0].represent   = $c("div","background-color:black;position:absolute;float:left;");
    this.aEtapas[0].width   = 40;
    this.aEtapas[0].height  = 50;
    this.aEtapas[0].top     = 0;
    this.aEtapas[0].left    = this.oMeio.clientWidth - this.aEtapas[0].width/2;
    setCSS(this.aEtapas[0].represent,"top:" + this.aEtapas[0].top + "px;left:"+ this.aEtapas[0].left +"px;width:" + this.aEtapas[0].width + "px;height:" + this.aEtapas[0].height + "px;");
    this.desktop.appendChild(this.aEtapas[0].represent);

    
    oRow = this.menu.insertRow(0);
    setCSS(oRow,"height:100%;");
    this.addItemMenu("TESTE1")
    this.addItemMenu("TESTE2")
    this.addItemMenu("TESTE3")
    for(oEtapa in this.oInfo)
    {
        descEta = "\n " + this.oInfo[oEtapa].forEtapa;
        for (i = 0; i < this.oInfo[oEtapa].aFases.length; i++) {
            descEta += "\n Fase " + (i+1) + ": " + this.oInfo[oEtapa].aFases[i].forFase;
        }
        //alert(descEta);
        this.aEtapas.push(new Etapa(this,this.oInfo[oEtapa]));
    }
    this.posicionarEtapas(true);
}
wkfDesktop.prototype.posicionarEtapas = function(bPaisFilhos)
{
    if(bPaisFilhos)
        for(forEtapaFilho in this.aEtapas)
        {
            for (i = 0; i < this.aEtapas[forEtapaFilho]["idSqAnt"].length; i++)
            for(forEtapasPai in this.aEtapas)
            {                
                if(this.aEtapas[forEtapaFilho]["idSqAnt"][i] == this.aEtapas[forEtapasPai]["idSq"])
                {
                    this.aEtapas[forEtapasPai].aFilhos.push(this.aEtapas[forEtapaFilho]);
                    this.aEtapas[forEtapaFilho].aPais.push(this.aEtapas[forEtapasPai]);
                }
            }
        }

    for(forEtapaFilho in this.aEtapas)
    {
        if(this.aEtapas[forEtapaFilho].aPais.length == 1)
        {
            if(this.aEtapas[forEtapaFilho].aPais[0].aFilhos.length == 1)
            {
                this.aEtapas[forEtapaFilho].represent   = $c("div","border:1px solid black;position:absolute;float:left;");
                this.aEtapas[forEtapaFilho].represent.innerHTML = this.aEtapas[forEtapaFilho].sdcEtapa;
                this.aEtapas[forEtapaFilho].width   = this.widthEtapa;
                this.aEtapas[forEtapaFilho].height  = this.heightEtapa;
                this.aEtapas[forEtapaFilho].top     = this.aEtapas[forEtapaFilho].aPais[0].top + this.aEtapas[forEtapaFilho].aPais[0].height + 20;
                this.aEtapas[forEtapaFilho].left    = this.aEtapas[forEtapaFilho].aPais[0].left + this.aEtapas[forEtapaFilho].aPais[0].width/2 - this.aEtapas[forEtapaFilho].width/2;                
            }
            else if(this.aEtapas[forEtapaFilho].aPais[0].aFilhos.length > 1)
            {
                iFilhos = this.aEtapas[forEtapaFilho].aPais[0].aFilhos.length;
                width   = (iFilhos * this.widthEtapa) + ((iFilhos - 1) * 20);
                for(iForEtapa = 0; iForEtapa < this.aEtapas[forEtapaFilho].aPais[0].aFilhos.length; iForEtapa++)
                    if(this.aEtapas[forEtapaFilho].aPais[0].aFilhos[iForEtapa] == this.aEtapas[forEtapaFilho])
                    {
                        this.aEtapas[forEtapaFilho].represent   = $c("div","border:1px solid black;position:absolute;float:left;");
                        this.aEtapas[forEtapaFilho].represent.innerHTML = this.aEtapas[forEtapaFilho].sdcEtapa;
                        this.aEtapas[forEtapaFilho].width   = this.widthEtapa;
                        this.aEtapas[forEtapaFilho].height  = this.heightEtapa;
                        this.aEtapas[forEtapaFilho].top     = this.aEtapas[forEtapaFilho].aPais[0].top + this.aEtapas[forEtapaFilho].aPais[0].height + 20;
                        this.aEtapas[forEtapaFilho].left    = this.aEtapas[forEtapaFilho].aPais[0].left + this.aEtapas[forEtapaFilho].aPais[0].width/2 - (width/2) + ((iForEtapa) * this.widthEtapa) + ((iForEtapa) * 20);
                    }
            }
            setCSS(this.aEtapas[forEtapaFilho].represent,"top:" + this.aEtapas[forEtapaFilho].top + "px;left:"+ this.aEtapas[forEtapaFilho].left +"px;width:" + this.aEtapas[forEtapaFilho].width + "px;height:" + this.aEtapas[forEtapaFilho].height + "px;");

            this.aEtapas[forEtapaFilho].represent.oEtapa = this.aEtapas[forEtapaFilho];
            this.desktop.appendChild(this.aEtapas[forEtapaFilho].represent);
        }
        else if(this.aEtapas[forEtapaFilho].aPais.length > 1)
        {
            this.aEtapas[forEtapaFilho].represent   = $c("div","border:1px solid black;position:absolute;float:left;");
            this.aEtapas[forEtapaFilho].represent.innerHTML = this.aEtapas[forEtapaFilho].sdcEtapa;
            this.aEtapas[forEtapaFilho].width   = this.widthEtapa;
            this.aEtapas[forEtapaFilho].height  = this.heightEtapa;
            this.aEtapas[forEtapaFilho].top     = this.aEtapas[forEtapaFilho].aPais[0].top + this.aEtapas[forEtapaFilho].aPais[0].height + 20;
            this.aEtapas[forEtapaFilho].left    = ((this.aEtapas[forEtapaFilho].aPais[this.aEtapas[forEtapaFilho].aPais.length-1].left + this.widthEtapa - this.aEtapas[forEtapaFilho].aPais[0].left)/2 + this.aEtapas[forEtapaFilho].aPais[0].left) - (this.widthEtapa/2);

            setCSS(this.aEtapas[forEtapaFilho].represent,"top:" + this.aEtapas[forEtapaFilho].top + "px;left:"+ this.aEtapas[forEtapaFilho].left +"px;width:" + this.aEtapas[forEtapaFilho].width + "px;height:" + this.aEtapas[forEtapaFilho].height + "px;");

            this.aEtapas[forEtapaFilho].represent.oEtapa = this.aEtapas[forEtapaFilho];
            this.desktop.appendChild(this.aEtapas[forEtapaFilho].represent);
        }
    }
    this.ligarEtapas();
}
wkfDesktop.prototype.ligarEtapas = function()
{
    for(forEtapaPai in this.aEtapas)
    {
        etPai = this.aEtapas[forEtapaPai];
        if(etPai.aFilhos.length > 0)
        {
            for(iEtapa = 0;iEtapa < etPai.aFilhos.length; iEtapa++)
            {
                etFilho = etPai.aFilhos[iEtapa];
                if(etPai.left == etFilho.left)
                {
                    oLine = Line((etFilho.top - (etPai.top+etPai.height) - (!ie?2:0)),2,("top:"+(etPai.top+etPai.height + (!ie?1:0))+"px;left:"+(etPai.left+etPai.width/2)));
                    this.desktop.appendChild(oLine);
                }
                if(etPai.left > etFilho.left)
                {
                    oLine = Line((etFilho.top - (etPai.top+etPai.height)),6,("top:"+(etPai.top+etPai.height)+"px;left:"+(etPai.left+etPai.width/2)));
                    this.desktop.appendChild(oLine);
                }
            }
        }
    }
}
Etapa = function(pai,oEtapa)
{
    for(forEtapa in oEtapa)
    {
        this[forEtapa] = oEtapa[forEtapa];
        if(forEtapa == "idSqAnt")
        {
            this[forEtapa] = this[forEtapa].split(",");
        }
        if(forEtapa == "aFases")
        {
            for(idFase in oEtapa[forEtapa])
            {
                oEtapa[forEtapa][idFase] = new Fase(this, oEtapa[forEtapa][idFase]);
            }
        }
    }
    this.aPais      = new Array();
    this.aFilhos    = new Array();
    this.top        = 0;
    this.left       = 0;
    this.width      = 0;
    this.height     = 0;
    this.represent  = null;
    return this;
}
Fase = function(pai, oFase)
{
    for(forFase in oFase)
    {
        this[forFase] = oFase[forFase];
    }
    return this;
}
wkfDesktop.prototype.addItemMenu = function(innerHTML)
{
    oRow = this.menu.insertRow(0);
    setCSS(oRow,"height:15px;");
    oCell = oRow.insertCell(0);
    setCSS(oCell,"height:15px;");
    oCell.innerHTML = innerHTML;
}
